package com.tedu.api.thread;

/**
 * 软件--多个或者一个进程【理解：工厂】---很多线程【理解：工厂工人】
 * 线程创建方式三种：
 * 1.Thread类--创建线程，编写步骤：
 * ①类继承Thread线程类
 * ②run方法--线程功能
 * ③start方法--启动线程
 * 优点：使用比较简单
 * 缺点：拓展性比较弱，继承线程，无法继承其他类【java类单继承】
 *      子类继承Thread，重写run方法，不利于线程复用
 * 2.Runnable接口--创建线程，编写步骤：
 * ①子类实现Runnable接口,必须实现run方法
 * ②Runnable父类引用指向子类【没有start方法】
 * ③执行Thread类，Runnable传入Thread构造器中
 * ④启动线程【start方法】
 * 3.匿名内部类方式--Lambda表达式
 *
 */
public class RunableAPI {
    public static void main(String[] args) {
        //2.Runnable父类引用指向子类：多态 造型
        Runnable r = new MyRunnable();
        //线程的启动必须是：start方法
        //3.创建Thread类--Runnable对象传入Thread构造器中
        Thread t1 = new Thread(r);
        //4.启动线程
        t1.start();

        //练习：Runnable实现创建线程---MyRunnable1  r1  t2
        Runnable r1 = new MyRunnable1();
        Thread t2 = new Thread(r1);
        t2.start();
    }
}
//1.子类实现Runnable并且重写run方法
class MyRunnable implements Runnable{
    //专门线程--提供功能方法 run()
    public void run() {
       for(int i=0;i<1000;i++){
           System.out.println("时间不等人");
       }
    }
}

class MyRunnable1 implements Runnable{
    public void run() {
        for(int i=0 ;i<1000;i++){
            System.out.println("人生不过三万天");
        }
    }
}